导航菜单
首页 >  如何在 Linux 中使用 Shell 脚本执行命令  > 如何创建和运行 Bash Shell 脚本 [初学者指南]

如何创建和运行 Bash Shell 脚本 [初学者指南]

如何创建和运行 Bash Shell 脚本 [初学者指南]

迈出 shell 脚本编写的第一步。了解如何创建一个简单的 bash 脚本以及如何运行它。

如果您必须多次执行此操作,请将其自动化!

您经常会发现自己在 Linux 上一遍又一遍地重复同一个任务。它可能是目录的简单备份,也可能是清理临时文件,甚至可以是数据库的克隆。

自动化任务是您可以利用 bash 脚本的强大功能的众多有用场景之一。

让我向您展示如何创建一个简单的 bash shell 脚本、如何运行 bash 脚本以及您必须了解的有关 shell 脚本的知识。

创建并运行您的第一个 shell 脚本

首先,我们创建一个名为 script 的新目录,用于托管所有 bash 脚本。

mkdir scriptscd scripts

现在,在这个“脚本目录”中,使用 cat 命令创建一个名为 hello.sh 的新文件:

cat > hello.sh

通过在终端中键入以下内容来插入以下行:

echo 'Hello, World!'

按Ctrl+D将文本保存到文件中并退出cat命令。

您还可以使用基于终端的文本编辑器,例如 Vim、Emacs 或 Nano。如果您使用的是桌面 Linux,您还可以使用图形文本编辑器(如 Gedit)将文本添加到此文件中。

因此,基本上您正在使用 echo 命令来打印“Hello World”。您可以直接在终端中使用此命令,但在此测试中,您将通过 shell 脚本运行此命令。

现在使用 chmod 命令使文件 hello.sh 可执行,如下所示:

chmod u+x hello.sh

最后,在 hello.sh 前面加上所需的 shell“bash”,运行您的第一个 shell 脚本:

bash hello.sh

您将在屏幕上看到Hello, World!。这可能是您编写过的最简单的 Hello World 程序,对吧?

这是您在上面看到的所有步骤的屏幕截图:

将 shell 脚本转换为 bash 脚本

使困惑?暂时不要感到困惑。我会向你解释事情。

Bash 是“Bourne-Again shell”的缩写,只是 Linux 中许多可用 shell 的一种。

shell 是一个接受并运行命令的命令行解释器。如果您以前运行过任何 Linux 命令,那么您就使用过 shell。当您在 Linux 中打开终端时,您已经在运行系统的默认 shell。

Bash 通常是大多数 Linux 发行版中的默认 shell。这就是为什么 bash 通常是 shell 的同义词。

shell 脚本通常具有几乎相同的语法,但有时也有所不同。例如,Zsh 中数组索引从 1 开始,而不是 bash 中从 0 开始。如果为 Zsh shell 编写的脚本具有数组,那么它在 bash 中的工作方式将不同。

为了避免令人不快的意外,您应该告诉解释器您的 shell 脚本是为 bash shell 编写的。你是怎样做的?你用的是舍邦!

shell 脚本开头的 SheBang 行

“#!/bin/bash ”行被称为 shebang 行,在某些文献中,它被称为 hashbang 行,这是因为它以两个字符 hash ‘#’ 和 bang ‘!’ 开头。

#! /bin/bashecho 'Hello, World!'

当您在脚本的最顶部包含“#!/bin/bash”行时,系统知道您想要使用 bash 作为脚本的解释器。因此,您现在可以直接运行 hello.sh 脚本,而无需在其前面添加 bash。

将 shell 脚本添加到 PATH(以便可以从任何目录运行)

您可能已经注意到我使用 ./hello.sh 来运行脚本;如果省略前导 ./,则会出现错误

abhishek@handbook:~/scripts$ hello.shhello.sh: command not found

Bash 认为您正在尝试运行名为 hello.sh 的命令。当您在终端上运行任何命令时;它们的 shell 在存储在 PATH 变量中的一组目录中查找该命令。

您可以使用 echo 查看该 PATH 变量的内容:

echo $PATH/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

冒号字符 (:) 分隔每次运行命令时 shell 扫描的每个目录的路径。

Linux 命令如 echo、cat 等可以从任何地方运行,因为它们的可执行文件存储在 bin 目录中。 bin 目录包含在 PATH 中。当您运行命令时,系统会检查 PATH 中所有可能的位置,以查找该命令的可执行文件。

如果您想从任何地方运行 bash 脚本(就像常规 Linux 命令一样),请将 shell 脚本的位置添加到 PATH 变量中。

首先,获取脚本目录的位置(假设您位于同一目录中),使用 PWD 命令:

pwd

使用导出命令将脚本目录添加到 PATH 变量。

export PATH=$PATH:/home/user/scripts

请注意,我已将“脚本目录”附加到 PATH 变量的最后。以便在标准目录之后搜索自定义路径。

关键时刻就在这里;运行 hello.sh:

abhishek@handbook:~/scripts$ hello.shHello, World!

有用!这将我们带到本教程的结尾。我希望您现在对 shell 脚本编写有一些基本的了解。您可以下载下面的 PDF,并通过一些示例脚本挑战练习您所学到的知识。如果您需要提示,还提供了他们的解决方案。

由于我向您介绍了 PATH 变量,请继续关注下一个 bash 脚本编写教程,我将在其中详细讨论 shell 变量。

相关推荐: